import { UserGroup, UserGroupParams, UserGroupResult } from '../../g-types/userGroup';
// import { API } from '../../g-server';

/**
 * 用户组API服务
 */
class UserGroupService {
  /**
   * 获取用户组列表
   * @param params 查询参数
   * @returns 用户组列表和总数
   */
  async getUserGroupList(params: UserGroupParams): Promise<UserGroupResult> {
    // 注释: 这里是接口的实际调用，目前使用模拟数据
    // return API.get('/user-group/list', { params });
    
    // 模拟数据
    const mockGroups: UserGroup[] = [];
    
    // 生成随机用户组数据
    for (let i = 1; i <= 20; i++) {
      mockGroups.push({
        id: i,
        name: `用户组${i}`,
        code: `GROUP_${i}`,
        description: `这是用户组${i}的描述信息，用于演示用途。`,
        userCount: Math.floor(Math.random() * 100),
        status: i % 5 === 0 ? 0 : 1,
        createTime: new Date(Date.now() - i * 86400000).toISOString().split('T')[0],
        updateTime: new Date(Date.now() - i * 43200000).toISOString().split('T')[0],
      });
    }
    
    // 根据参数过滤
    let filteredGroups = mockGroups;
    
    if (params.keyword) {
      const keyword = params.keyword.toLowerCase();
      filteredGroups = filteredGroups.filter(
        group => 
          group.name.toLowerCase().includes(keyword) || 
          (group.code && group.code.toLowerCase().includes(keyword)) ||
          (group.description && group.description.toLowerCase().includes(keyword))
      );
    }
    
    if (params.name) {
      const name = params.name.toLowerCase();
      filteredGroups = filteredGroups.filter(
        group => group.name.toLowerCase().includes(name)
      );
    }
    
    if (params.code) {
      const code = params.code.toLowerCase();
      filteredGroups = filteredGroups.filter(
        group => group.code && group.code.toLowerCase().includes(code)
      );
    }
    
    if (params.status !== undefined) {
      filteredGroups = filteredGroups.filter(
        group => group.status === params.status
      );
    }
    
    // 计算分页
    const total = filteredGroups.length;
    const start = (params.page - 1) * params.pageSize;
    const end = start + params.pageSize;
    const list = filteredGroups.slice(start, end);
    
    // 模拟网络延迟
    await new Promise(resolve => setTimeout(resolve, 500));
    
    return {
      list,
      total,
    };
  }
  
  /**
   * 创建用户组
   * @param userGroup 用户组信息
   * @returns 创建结果
   */
  async createUserGroup(userGroup: Omit<UserGroup, 'id'>): Promise<UserGroup> {
    // 注释: 这里是接口的实际调用
    // return API.post('/user-group', userGroup);
    
    // 模拟网络延迟
    await new Promise(resolve => setTimeout(resolve, 500));
    
    return {
      id: Math.floor(Math.random() * 1000) + 100,
      ...userGroup,
      userCount: 0,
      createTime: new Date().toISOString().split('T')[0],
      updateTime: new Date().toISOString().split('T')[0],
    };
  }
  
  /**
   * 更新用户组
   * @param userGroup 用户组信息
   * @returns 更新结果
   */
  async updateUserGroup(userGroup: UserGroup): Promise<UserGroup> {
    // 注释: 这里是接口的实际调用
    // return API.put(`/user-group/${userGroup.id}`, userGroup);
    
    // 模拟网络延迟
    await new Promise(resolve => setTimeout(resolve, 500));
    
    return {
      ...userGroup,
      updateTime: new Date().toISOString().split('T')[0],
    };
  }
  
  /**
   * 删除用户组
   * @param id 用户组ID
   * @returns 删除结果
   */
  async deleteUserGroup(_id: string | number): Promise<void> {
    // 注释: 这里是接口的实际调用
    // return API.delete(`/user-group/${_id}`);
    
    // 模拟网络延迟
    await new Promise(resolve => setTimeout(resolve, 500));
  }
  
  /**
   * 获取用户组成员列表
   * @param groupId 用户组ID
   * @returns 成员列表
   */
  async getGroupMembers(_groupId: string | number): Promise<any[]> {
    // 注释: 这里是接口的实际调用
    // return API.get(`/user-group/${groupId}/members`);
    
    // 模拟网络延迟
    await new Promise(resolve => setTimeout(resolve, 500));
    
    // 模拟数据
    return [];
  }
  
  /**
   * 添加用户组成员
   * @param groupId 用户组ID
   * @param userIds 用户ID列表
   */
  async addGroupMembers(_groupId: string | number, _userIds: (string | number)[]): Promise<void> {
    // 注释: 这里是接口的实际调用
    // return API.post(`/user-group/${groupId}/members`, { userIds });
    
    // 模拟网络延迟
    await new Promise(resolve => setTimeout(resolve, 500));
  }
  
  /**
   * 移除用户组成员
   * @param groupId 用户组ID
   * @param userIds 用户ID列表
   */
  async removeGroupMembers(_groupId: string | number, _userIds: (string | number)[]): Promise<void> {
    // 注释: 这里是接口的实际调用
    // return API.delete(`/user-group/${groupId}/members`, { data: { userIds } });
    
    // 模拟网络延迟
    await new Promise(resolve => setTimeout(resolve, 500));
  }
}

export const UserGroupApi = new UserGroupService(); 